function channel = generate_channel_matrix(num_users, num_tx_antennas, num_rx_antennas)
% generate_channel_matrix - 生成多用户MIMO信道矩阵
%
% 输入参数:
%   num_users       - 用户数量
%   num_tx_antennas - 发射天线数量
%   num_rx_antennas - 每个用户的接收天线数量
%
% 输出参数:
%   channel - 元胞数组，channel{k}表示第k个用户的信道矩阵

% 初始化信道元胞数组
channel = cell(1, num_users);

% 为每个用户生成信道矩阵
% 在RSMA中，我们考虑多输入多输出(MIMO)信道
for u = 1:num_users
    % 生成瑞利衰落信道矩阵
    % 假设复高斯分布，实部和虚部均为均值为0、方差为0.5的高斯分布
    H_real = randn(num_rx_antennas, num_tx_antennas) / sqrt(2);
    H_imag = randn(num_rx_antennas, num_tx_antennas) / sqrt(2);
    H = H_real + 1i * H_imag;
    
    % 存储用户的信道矩阵
    channel{u} = H;
    
    % 计算信道条件数，用于评估信道状况
    condition_number = cond(H);
    
    % 输出信道信息
    fprintf('用户 %d 信道矩阵条件数: %.2f\n', u, condition_number);
    
    % 计算信道容量(未考虑干扰)
    snr_linear = 10;  % 假设10dB SNR
    capacity = log2(det(eye(num_rx_antennas) + snr_linear/num_tx_antennas * (H * H')));
    fprintf('用户 %d 信道容量: %.2f bits/s/Hz\n', u, real(capacity));
end

% 在RSMA系统中，信道状态信息(CSI)对于预编码设计至关重要
% 这里假设基站有完美的CSI

end 